#include "videoSequence.h"

VideoSequence::VideoSequence()
{
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


VideoSequence::VideoSequence( QString basePathFramesForAllCameras_IN, QString myFileString_IndexCheat_IN )
{
        basePathFramesForAllCameras = basePathFramesForAllCameras_IN;

        frameRate   = 30;
        frameWidth  = 640;
        frameHeight = 480;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        QFile myFile ( myFileString_IndexCheat_IN );

        myFile.open(QIODevice::ReadOnly);

        if( !myFile.isOpen() )
        {
            ErrorManager::error(3, myFileString_IndexCheat_IN);
            return;
        }

        QTextStream myStream(&myFile);

        QString dummyDescr;
        int     dummyValuy;

        myStream >> dummyDescr;       myStream >> totalAllignedFrames;
        myStream >> dummyDescr;       myStream >> dummyValuy;
        myStream >> dummyDescr;       myStream >> videoOffset;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void VideoSequence::loadCurrentFrame( int cameraNumber, int frameNumber )
{

        //////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////
        if (  (frameNumber < 0)  ||  (frameNumber >= totalAllignedFrames)  )
        {
            return;
        }

        frameNumber += videoOffset;
        //////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////

        QString pathhh_RGB;
        QString pathhh_RGBD;
        QString pathhh_DDD_RAW;
        QString pathhh_DDD_VIZ;


        if   (basePathFramesForAllCameras.endsWith("/") == false)   basePathFramesForAllCameras += "/";


        pathhh_RGB      = basePathFramesForAllCameras + QString::number( cameraNumber + 1 ) + "/rgb/"       + QString::number( frameNumber ).rightJustified(3,'0',false) + ".png"; // ok
        pathhh_RGBD     = basePathFramesForAllCameras + QString::number( cameraNumber + 1 ) + "/rgbd/"      + QString::number( frameNumber ).rightJustified(3,'0',false) + ".png"; // ok
        pathhh_DDD_VIZ  = basePathFramesForAllCameras + QString::number( cameraNumber + 1 ) + "/depth_viz/" + QString::number( frameNumber ).rightJustified(3,'0',false) + ".png"; // ok
        pathhh_DDD_RAW  = basePathFramesForAllCameras + QString::number( cameraNumber + 1 ) + "/depth/"     + QString::number( frameNumber ).rightJustified(3,'0',false) + ".yml"; // ok


        currFrame_RGB_CV     = cv::imread( pathhh_RGB. toStdString() );
        currFrame_RGBD_CV    = cv::imread( pathhh_RGBD.toStdString() );
        currFrame_DDD_VIZ_CV = cv::imread( pathhh_DDD_VIZ.toStdString() ); // already in BGR


        currFrame_DDD_VIZ_QT = QImage( (uchar*)currFrame_DDD_VIZ_CV.data,
                                               currFrame_DDD_VIZ_CV.cols,
                                               currFrame_DDD_VIZ_CV.rows, QImage::Format_RGB888 );

        currFrame_RGB_QT     = QImage( (uchar*)currFrame_RGB_CV.data,
                                               currFrame_RGB_CV.cols,
                                               currFrame_RGB_CV.rows,     QImage::Format_RGB888 );

        currFrame_RGBD_QT    = QImage( (uchar*)currFrame_RGBD_CV.data,
                                               currFrame_RGBD_CV.cols,
                                               currFrame_RGBD_CV.rows,    QImage::Format_RGB888 );

        std::string filename = pathhh_DDD_RAW.toStdString();
        cv::FileStorage fs(filename, cv::FileStorage::READ);
        cv::FileNode fn = fs["depth"];
        if (fn.empty())    return;
        cv::FileNodeIterator current = fn.begin(), it_end = fn.end(); // go through the node
        for ( ; current != it_end; current++)
        {
            cv::FileNode item = *current;
            item >> currFrame_DDD_RAW_CV;
        }

}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

